package com.ftg.wymall.admin.service.impl;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ftg.wymall.admin.entity.UmsRole;
import com.ftg.wymall.admin.mapper.UmsRoleMapper;
import com.ftg.wymall.admin.service.IUmsRoleService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ftg.wymall.comm.vo.CodeStatusEnum;
import com.ftg.wymall.comm.vo.RespMessUtil;
import com.ftg.wymall.util.ServiceUtil;
import com.mysql.cj.callback.UsernameCallback;
import org.apache.ibatis.jdbc.SQL;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Objects;

/**
 * <p>
 * 后台用户角色表 服务实现类
 * </p>
 *
 * @author kangjx
 * @since 2023-10-27
 */
@Service
public class UmsRoleServiceImpl extends ServiceImpl<UmsRoleMapper, UmsRole> implements IUmsRoleService {

    /**
     * 根据指定的分页大小、分页限制和角色名，获取所有角色的分页数据
     *
     * @param pageSize  分页大小
     * @param pageLimit 分页限制
     * @param roleName  角色名
     * @return 分页结果数据及状态码
     */
    @Override
    public RespMessUtil<IPage> showAllWithPage(long pageSize, long pageLimit, String roleName) {
        IPage<UmsRole> iPage = new Page<>(pageSize, pageLimit);
        QueryWrapper<UmsRole> query = new QueryWrapper<>();
        if (!StrUtil.hasBlank(roleName)) {
            query.like("name", roleName);
        }
        return RespMessUtil.build(CodeStatusEnum.SUCCESS, this.getBaseMapper().selectPage(iPage, query));
    }

    @Resource
    ServiceUtil serviceUtil;

    /**
     * 重写fuza方法
     *
     * @param pageSize  分页大小
     * @param pageLimit 分页限制
     * @param roleName  角色名
     * @return RespMessUtil<IPage>对象
     */
    @Override
    public RespMessUtil<IPage> fuza(long pageSize, long pageLimit, String roleName) {
        return serviceUtil.pageUtilForMap("select * from ums_role", pageSize, pageLimit);
    }

    /**
     * 根据给定的id切换状态
     *
     * @param id 给定的id
     * @return 返回null
     */
    @Override
    public Boolean switchStatus(Long id) {
        return this.getBaseMapper().switchStatus(id);
    }


}
